package cn.tedu.collection;

import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

/**本类用于测试Set*/
public class TestSet {
    public static void main(String[] args) {
        //1.创建对应的集合对象
        Set<String> set = new HashSet<>();
        //2.存入数据
        set.add("紫霞仙子");
        set.add("至尊宝");
        set.add("蜘蛛精");
        set.add("紫霞仙子");
        set.add(null);
        set.add(null);
        /**1.set集合中的元素都是没有顺序的
         * 2.set集合中的元素不能重复
         * 3.set集合中可以存null值，但是最多只有一个*/
        System.out.println(set);

        //3.常用方法
        System.out.println(set.contains("唐僧"));//f，判断是否包含指定元素
        System.out.println(set.isEmpty());//f，判断集合是否为空
        System.out.println(set.remove(null));//t
        System.out.println(set);
        System.out.println(set.size());//3，获取集合中的元素
        System.out.println(Arrays.toString(set.toArray()));

        //4.测试集合间的操作
        HashSet<String> set2 = new HashSet<>();
        set2.add("小兔纸");
        set2.add("小脑斧");
        set2.add("小海藤");
        set2.add("小狮几");
        System.out.println(set2);

        //将集合1的所有元素添加到集合2中
        set2.addAll(set);
        System.out.println(set2);
        //判断集合1中是否包含集合2的所有元素
        System.out.println(set.containsAll(set2));
        //移除集合2中属于集合1的所有元素
        System.out.println(set2.removeAll(set));
        System.out.println(set2);
        //取set2集合中属于set集合的公共元素
        System.out.println(set2.retainAll(set));
        System.out.println(set2);

        //5.集合的迭代
        //获取迭代器
        Iterator<String> it = set.iterator();
        //循环迭代，判断是否有下一个元素可以迭代
        while (it.hasNext()){
            //输出迭代数据
            System.out.println(it.next());
        }

    }
}
